10 CLEAR 300,&H2000:AD=&H2000:CLS
20 DIM D%(20)
30 FOR I=0 TO 16
40 READ A$: D%(I)=VAL(A$)
50 NEXT
55 ' Sub System Maintainance Command
60 DATA &H3F,&H59,&H41,&H4D,&H41,&H55,&H43,&H48,&H49,&H91,&HD8,&H00,&HD3,&HC0,&H00,&H40,&H90
100 GOSUB 1000'SUB SYSTEM HALT
110 FOR I=0 TO 16
120 POKE &HFC82+I,D%(I)
130 NEXT
140 POKE &HFD05,0 'START
150 GOSUB 1000
160 FOR I=0 TO &H3F
170 POKE AD+I,PEEK(&HFCC0+I)
180 NEXT
190 AD=AD+&H40
200 POKE &HFC80,PEEK(&HFC80) OR &H80
210 POKE &HFD05,0
220 LOCATE 1,10:PRINT HEX$(D%(10)*256+D%(11)+&H3F)
230 D%(11)=D%(11)+&H40
240 IF D%(11)>&HFF THEN D%(11)=0:D%(10)=D%(10)+1
250 IF D%(10)>&HFF THEN GOTO 300 ELSE GOTO 100
300 PRINT"SEND SUB SYSTEM ROM Y or N";
310 C$=INPUT$(1)
320 IF C$="y" OR C$="Y" THEN GOTO 400
330 IF C$="n" OR C$="N" THEN END
340 GOTO 310
400 OPEN "O",#1,"COM0:S8N1"
420 FOR I=&H2000 TO &H47FF
430 PRINT #1,CHR$(PEEK(I));
440 LOCATE 1,13:PRINT I-&H1FFF
450 NEXT
460 CLOSE
470 PRINT:PRINT"COMPLETE"
480 END
1000 IF (PEEK(&HFD05)AND &H80)<>0 THEN 1000 'BUSY CHECK
1010 POKE &HFD05,&H80 'HALT
1020 IF (PEEK(&HFD05)AND &H80)=0 THEN 1020 'READY CHECK
1030 RETURN
|